package funcional.atendimento;

import funcional.atendimento.exception.AtendimentoInvalidoException;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;

import junit.framework.TestCase;
import pessoal.Endereco;
import pessoal.cliente.ClienteFiel;
import pessoal.funcionario.Funcionario;
import suite.SuiteAbstrata;
import suite.SuiteStandard;
import util.ErroAcessoRepositorioException;

public class AtendimentoTest extends TestCase {

	AtendimentoAbstrato a1;
	AtendimentoAbstrato a2;
	AtendimentoAbstrato a3;
	AtendimentoAbstrato a4;
	AtendimentoAbstrato a5;
	Funcionario f1;
	Funcionario f2;
	ClienteFiel c1;
	ClienteFiel c2;
	SuiteAbstrata s1;
	SuiteAbstrata s2;
	Endereco end1;
	RepositorioAtendimentoBDR rep = null;
	
	protected void setUp() throws Exception {
		f1 = new Funcionario("22222","te fode ","11111111",end1,111);
		c1 = new ClienteFiel("222222","ahahahahaha","2222222",end1,222);
		s1 = new SuiteStandard(1,"123",1,111,1111);
		a1 = new AtendimentoComum(14,f1,s1,new Date(2001,GregorianCalendar.MARCH,4,3,45),
				new Date(2002,GregorianCalendar.DECEMBER,12,6,35));
		a2 = new AtendimentoClienteFiel(14,f1,s1,new Date(2007,04,6,8,8),
				new Date(2007,07,18,9,8),c1);
		rep = new RepositorioAtendimentoBDR();
	}

	/*public void testAtualizarAtendimento() {
		try {
			rep.atualizarAtendimento(a2);
		} catch (ErroAcessoRepositorioException e) {
			System.out.println(e.getCodigoErro());
			System.out.println(e.getMessage());
			System.out.println(e.getCause());
			System.out.println(e.getExcecaoInterna());
			fail("erro acesso ao repositorio");
		} catch (AtendimentoInvalidoException e) {
			fail("atendimento invalido");
		}
	}*/

	public void testConsultarAtendimento() {
		try {
			assertTrue(rep.consultarAtendimento(13) instanceof AtendimentoComum);
			Date d = new Date(rep.consultarAtendimento(13).getDataHoraEntrada().getTime());
			System.out.println(d);
			System.out.println(rep.consultarAtendimento(13).getDataHoraEntrada().getTime());
			/*d = rep.consultarAtendimento(13).getDataHoraSaida().getTime();
			System.out.println(d);*/
			SimpleDateFormat formato2 = new SimpleDateFormat("dd'/'MM'/'yyyy, HH:mm'h'");
			System.out.println("6-"+formato2.format(d));
		} catch (ErroAcessoRepositorioException e) {
			System.out.println(e.getCodigoErro());
			System.out.println(e.getMessage());
			System.out.println(e.getCause());
			System.out.println(e.getExcecaoInterna());
			fail("erro acesso ao repositorio");
		} catch (AtendimentoInvalidoException e) {
			
			fail("atendimento invalido");
		}
		
	}

	/*public void testExcluirAtendimento() {
		try {
			rep.excluirAtendimento(9);
		} catch (ErroAcessoRepositorioException e) {
			System.out.println(e.getCodigoErro());
			System.out.println(e.getExcecaoInterna());
			fail("erro acesso ao repositorio");
		} catch (AtendimentoInvalidoException e) {
			fail("atendimento invalido");
		}
		
	}*/

	/*public void testInserirAtendimento() {
		try {
			//rep.inserirAtendimento(a1);
			rep.inserirAtendimento(a2);
		} catch (ErroAcessoRepositorioException e) {
			
			System.out.println(e.getCodigoErro());
			System.out.println(e.getMessage());
			System.out.println(e.getCause());
			System.out.println(e.getExcecaoInterna());
			e.printStackTrace();
			fail("erro acesso ao repositorio");
		}
	}*/

	/*public void testListarAtendimentos() {
		try {
			assertTrue(!rep.listarAtendimentos().isEmpty());
		} catch (ErroAcessoRepositorioException e) {
			fail("erro acesso ao repositorio");
		}
		 
	}*/

}
